package Mundo;

public class Radio implements radio{

    //-----------------------------------------------------------------
    // Constantes
    //-----------------------------------------------------------------
	
	final public static double INICIO_AM = 530;
	
	final public static double INICIO_FM = 87.9;
	
	final public static double CAMBIO_AM = 10;
	
	final public static double CAMBIO_FM = 0.2;
	
	final public static double FIN_AM = 1610;
	
	final public static double FIN_FM = 107.9;
	
	final public static int SIZE = 12;
	
	//-----------------------------------------------------------------
    // Atributos
    //-----------------------------------------------------------------
	
	private Frecuencia am;
	
	private Frecuencia fm; 
	
	private boolean tipoFrecuencia = true; // true = AM
	
	private boolean on = false;
	
	private double[] memoria;
	
    //-----------------------------------------------------------------
    // Métodos
    //-----------------------------------------------------------------
	
	public boolean getOn()     	// devuelve si está encendido o pagado
	{
		if (on == false)
			return true;
		else
			return false;
	}
	
	public void onoff ()
	{
		if (!on)
		{
			am= new Frecuencia ("AM", INICIO_AM, FIN_AM);
			fm= new Frecuencia ("FM", INICIO_FM, FIN_FM);
			memoria = new double [SIZE];
			on = true;
		}
		else
		{
			memoria = null;
			am = null;
			fm = null;
			on = false;
		}
	}
	
	public void change()
	{
		if (tipoFrecuencia)
		{
			tipoFrecuencia = false;
			fm.saltoDial(INICIO_FM);
		}
		else
		{
			tipoFrecuencia = true;
			am.saltoDial(INICIO_AM);
		}
	}
	
	public void avanzar()
	{
		if (tipoFrecuencia)
			am.cambiarDial(CAMBIO_AM, true, INICIO_AM, FIN_AM);
		else
			fm.cambiarDial(CAMBIO_FM, true, INICIO_FM, FIN_FM);
	}
	
	public void retroceder()
	{
		if (tipoFrecuencia)
			am.cambiarDial(CAMBIO_AM, false, INICIO_AM, FIN_AM);
		else
			fm.cambiarDial(CAMBIO_FM, false, INICIO_FM, FIN_FM);
	}
	
	public double getEmisora()
	{
		// TODO en una variable en el botón, guardar este dial.
		if (tipoFrecuencia)
			return am.darDial();
		else
			return fm.darDial();
	}
	
	public boolean getFM()
	{
		if(tipoFrecuencia)
			return false;
		else
			return true;
	}

	public void push(int pos) 
	{	
		if(memoria[pos]%10 == 0)			//Emisora de AM
		{
			tipoFrecuencia = true;
			am.saltoDial(memoria[pos]);
		}
		else
		{
			tipoFrecuencia = false;
			fm.saltoDial(memoria[pos]);
		}
	}

	public void save(int pos)
	{
		memoria[pos] = getEmisora();
	}

}
